#ifndef __DS18B20_H
#define __DS18B20_H

#include "stm32f1xx_hal.h"
#include "delay_us.h"

// 引脚宏定义
#define DS18B20_DQ_PORT    GPIOA                   // DS18B20数据线端口
#define DS18B20_DQ_PIN     GPIO_PIN_12              // DS18B20数据线引脚

// DS18B20 标准命令
#define DS18B20_CMD_SKIP_ROM        0xCC    // 跳过ROM（单设备时用）
#define DS18B20_CMD_CONVERT_T       0x44    // 温度转换命令
#define DS18B20_CMD_READ_SCRATCHPAD 0xBE    // 读暂存器命令

// 引脚电平操作宏
#define DS18B20_IO_WRITE(PORT,PIN,STATE)    HAL_GPIO_WritePin(PORT, PIN, STATE)
#define DS18B20_IO_READ(PORT,PIN)           HAL_GPIO_ReadPin(PORT, PIN)

// 函数声明
void DS18B20_Reset(void);
void DS18B20_WriteByte(uint8_t Data);
uint8_t DS18B20_Readbit(void);
uint8_t DS18B20_ReadByte(void);
uint8_t DS18B20_ReadTemperature(float *temp);
void DS18B20_IO_IN(void);
void DS18B20_IO_OUT(void);
uint8_t DS18B20_Check(void);
void DS18B20_Start(void);
uint8_t DS18B20_Init(void);

#endif